   5 .CONNECT FOUR
   6 .BY BOB WISEMAN
  10 gosub 900
  20 A=1;gosub 200;gosub 700
  30 if Egoto 100
  40 A=2;if B=1gosub 500
  50 if B=2gosub 200
  60 gosub 700;if Egoto 100
  70 goto 20
 100 gosub 800;goto 10
 200 CX=-77;CY=40
 205 print "PLAYER",#2,A,"-ENTER COLUMN ",
 210 K=KP;TV=K;X=10mul K-520
 220 Y=20;gosub 975
 225 if I#0MU=70;MU=49;goto 205
 250 return 
 500 H=30000;Q=-H;C=0;CX=-77;CY=40
 501 NT=0;&(21)=15;&(22)=-1;R=0
 503 print "NOW I WILL FIND A MOVE ",
 505 for X=-30to 30step 10;Y=-30;R=0
 510 gosub 975;if I>0Y=Y+10;goto 510
 515 if I<0goto 660
 520 D=4-ABS(Xmul Y)div 100;W=X;Z=Y;K=0
 525 for L=-1to 1;for M=-1to 1
 526 &(16)=X+30;&(17)=20mul L+20;&(18)=Mmul 30+30
 530 X=W;Y=Z;if L=0if M=0goto 570
 535 F=3;K=K+1;P=0
 537 &(19)=Kmul 15
 540 X=X+10mul L;Y=Y+10mul M;gosub 975
 545 if F=3F=I
 550 if I<1goto 565
 560 if I=F P=P+2mul I-3;goto 540
 565 R=R+ABS(P);@(K)=P;@(K+8)=I
 570 next M;next L
 572 if R=0goto 625
 575 for M=1to 8;I=@(M);J=@(9-M)
 576 &(19)=Mmul 17
 580 L=J+I;P=@(M+8);R=@(17-M)
 585 if (L=3)+(I=3)D=H
 590 if (L=-3)+(I=-3)D=D+500
 595 if I>0D=D+1;if P=0D=D+1
 597 if I#0D=D+1;if P=0D=D+1
 600 if (((Imul I=4)mul (J=0))+(L=2))mul (P=0)mul (R=0)D=D+100
 610 next M
 615 if (@(2)<0)+(@(3)<0)+(@(7)<0)+(@(8)<0)goto 620
 618 goto 625
 620 A=1;X=W;Z=Z+10;gosub 720;if E=1 E=0;D=D-Hdiv 10
 625 A=2;X=W
 630 if D=Qif rnd (3)=1 Q=-H
 635 if D>Q C=W;Q=D
 660 next X;X=C
 665 &(19)=0;&(18)=0;NT=1;&(20)=0;return 
 700 Y=20;W=X
 705 Z=Y;I=A;gosub 950
 710 Y=Y-10;gosub 975;if I#0goto 720
 715 Y=Z;gosub 950;Y=Y-10;goto 705
 720 K=0;for L=-1to 1
 725 for M=-1to 1;if M=0if L=0goto 750
 730 K=K+1;X=W;Y=Z;P=0
 735 X=X+10mul L;Y=Y+10mul M;gosub 975
 740 if I=A P=P+1;goto 735
 745 @(K)=P
 750 next M;next L
 755 for K=1to 4
 760 if @(K)+@(9-K)>2E=1
 765 next K;CX=CX-6;TV=32
 770 X=W
 790 return 
 800 CX=-77;CY=40
 805 print "GAME OVER -- 4 IN A ROW"
 810 print "PUSH GO";K=KP;return 
 900 clear ;input "#PLAYERS?"B
 905 if B>2goto 900
 910 clear ;E=0;NT=1;BC=47;FC=90
 915 box 0,-5,71,61,1;I=0
 920 for X=-30to 30step 10
 925 for Y=20to -30step -10
 930 gosub 950;next Y;next X;return 
 950 box X,Y,9,9,2
 955 if I=1box X,Y,7,7,1;box X,Y,3,3,2
 960 if I=2box X,Y,7,3,1;box X,Y,3,7,1
 965 MU=(X+Y+50)mul I
 970 return 
 975 if (ABS(X)>30)+(Y<-30)+(Y>20)I=-1;return 
 980 I=PX(X,Y)+PX(X,Y+3);return 
:return ;run  
